搜索 K
Appearance
博客正在加载中...
Appearance
Nginx 可以实现负载均衡,那么 Nginx 本身能否实现负载均衡呢?当然可以,本文就来讲解下 Nginx 如何实现高可用。
之前我们讲过,Nginx 可以实现负载均衡,将请求分发到服务器集群上:
但这种结构有个问题:如果 Nginx 服务宕机了,那么用户就不能访问了服务了,毕竟谁也不能包装 Nginx 能一直运行下去,可能有突发的情况,例如内存爆了,CPU 超高,硬盘坏了,网络断了。。。
为此,我们可以搭建 Nginx 集群,这样即使某一台 Nginx 宕机了,也还有另一台 Nginx 提供服务,架构如下:
架构说明:
顺便介绍下冷备、热备等概念:
具体采用以上哪种集群方式,得看实际情况讨论,笔者负责的一个系统访问量比较高,有 4 个 Nginx 服务器,4 个 Tomcat 服务器,采用多活的方式。 接下来我们就试试主从集群搭建和双主集群搭建。
Keepalived 能做什么?简单来说就是安装后,可以配置其监控一些软件的状态,当有软件宕机后可以配置切换到另外一台软件等。而在故障节点恢复正常后,Keepalived 又可以自动将该服务节点重新加入集群中。
可以理解为启动一个路由的作用(相当于路标,告诉人们怎么走;在计算机中可以理解为告诉请求应该发到哪里) 比如 Keepalived + Nginx 可以实现这样的效果:
为了模拟高可用,我们需要准备如下
为了方便,我们这里仅仅演示用虚拟 IP 访问 Nginx 服务器,就不用 Tomcat 服务器了,并且重置下 Nginx 的配置文件,实得访问 Nginx 后访问的是首页。 如果你使用 VirtualBox 或者 VMWare,可以通过复制的方式来搭建另一台服务器,省不少功夫。如果你会 Docker,则更方便了。注意,如果是云主机等,可能不能创建虚拟 IP 这里说下我的环境,方便后期的讲解
服务器 1:IP 地址 192.168.2.242
服务器 2:IP 地址 192.168.2.138
由于我使用的是复制的方式,因此两台服务器都已经安装好了
为了区分两个 Nginx,我们给每个 Nginx 的首页加上一些字,这样看到页面我们就知道访问的是哪个 Nginx 了: 在 192.168.2.242 上执行:
echo 192.168.2.242 >> /opt/nginx/html/index.html 在 192.168.2.138 上执行:
echo 192.168.2.138 >> /opt/nginx/html/index.html然后分别安装 Keepalived。为了方便,这里直接用 yum 命令安装
yum -y install keepalived安装后的位置:/etc/keepalived/,并且里面有个配置文件 keepalived.conf:
cd /etc/keepalived/
ll
-rw-r--r--. 1 root root 3598 10月 1 2020 keepalived.conf后续我们配置主要就是修改这个文件。